package com.djs.lock;

/**
 * @Description 锁接口
 * @auther dengjingsi
 * @create 2020-03-16 14:28
 */
public interface ILock {

    /**
     * 获得锁
     * @return
     */
    public String lock();

    /**
     * 尝试获得锁
     * @return
     */
    public String tryLock();

    /**
     * 获得有时限的锁
     * @param tryLockTime 尝试获取时间
     * @param timeout 限制时间
     * @return
     */
    public String tryLock(long tryLockTime, long timeout);

    /**
     * 检查锁的有效性，返回true有效，返回false无效
     * @param lockId
     * @return
     */
    public boolean checkValidLock(String lockId);

    /**
     * 解锁
     */
    public boolean unLock();
}
